const { mock, Random } = require('mockjs')

const custInfo = {
	'userId|100000-999999': 1, // 外部联系人的userid
	name: '@ctitle', // 外部联系人的名称
	externalUserid: '@id', // 客户对应企微userId
	avatar: Random.image('200x200', '@color', 'avator'), // 外部联系人头像
	'type|1-2': 1, // 外部联系人的类型，1表示微信用户，2表示企业微信用户
	subBranch: '@cname', // 客户分支机构/理财经理分支机构
	'gender|0-2': 1, // 外部联系人性别 0-未知 1-男性 2-女性
	'certified|0-1': 1, // 是否认证 0未认证 1已认证
	custDetailId: '@id', // 客户详情id
	updateTime: '@date("yyyy-MM-dd hh:mm:ss")', // 修改时间
	createTime: '@date("yyyy-MM-dd hh:mm:ss")', // 创建时间
	phone: '18223242993',
	bank: '天山路农商支行',
	'totalAsset|1-10000000.1-10': 1,
	ethnicGroup: '汉族',
	'isBelong|0-1': 1, // 是否归属当前理财经理 0不归属 1归属
	'label|3': ['@cname'], // 标签
	// 资产占比json其中：dmdepBal活期占比，tmdepBal定期存款占比，chrtcBal理财余额占比，shrAmtBal股金余额占比
	assetAllocation: JSON.stringify({
		dmdepBal: 0.1,
		tmdepBal: 0.4,
		chrtcBal: 0.3,
		shrAmtBal: 0.2,
	}),
	// 提醒条数json其中：dqMsg1定期到期提醒条数，dqMsg2：定期到期未承接提醒条数，lcMsg1：理财到期提醒条数，lcMsg2：理财到期未承接提醒条数
	warnNums: JSON.stringify({
		dqMsg1: 3,
		dqMsg2: 2,
		lcMsg1: 0,
		lcMsg2: 1,
	}),
	custManagerName: '@ctitle', // 理财经理名称
	'custManagerPhone|13000000000-19999999999': 1, // 理财经理手机号
	custManagerAvatar: Random.image('200x200', '@color', 'avator'), // 理财经理头像
}

const mockObj = {
	// 各专区页面展示分类结构数据
	'/cust/list': (req, res) => {
		const {
			certified = 0,
			pageSize = 20,
			pageNo = 1,
			searchParam = '',
		} = req.query || {}
		const json = {
			code: 200,
			msg: '',
			data: {
				[`list|${pageSize}`]: [custInfo],
				pageSize: Number(pageSize),
				pageNo: Number(pageNo),
				totalPage: 10,
			},
		}
		setTimeout(() => res.json(mock(json)), 2000)
	},
	'/cust/detail': (req, res) => {
		const { contactUserId = '' } = req.query || {}
		const json = {
			code: 200,
			msg: '',
			data: custInfo,
		}
		setTimeout(() => res.json(mock(json)), 2000)
	},
	'/sendSms': (req, res) => {
		const json = {
			'code|1': [200, 10016],
			msg: '',
			data: '',
		}
		setTimeout(() => res.json(mock(json)), 2000)
	},
	'/auth': (req, res) => {
		const json = {
			'code|1': [1607],
			msg: '',
			data: '',
		}
		setTimeout(() => res.json(mock(json)), 2000)
	},
}

module.exports = (app) => {
	if (process.env.MOCK !== 'true') {
		return
	}

	Object.entries(mockObj).forEach(([path, fn]) => {
		app.get(path, fn)
		app.post(path, fn)
	})
}
